package club.zhilin.guli.service.trade.service;

import club.zhilin.guli.common.base.result.CommonResult;
import club.zhilin.guli.service.trade.domain.Order;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.Map;

/**
 * <p>
 * 订单 服务类
 * </p>
 *
 * @author zhilin
 * @since 2022-03-01 12:56:55
 */
public interface IOrderService extends IService<Order> {

    /**
     * 生成订单
     *
     * @param courseId 课程id
     * @param id       用户id
     * @return commonResult
     */
    CommonResult<String> saveOrder(String courseId, String id);

    /**
     * 根据课程id和用户id查询是否支付该订单
     *
     * @param courseId 课程id
     * @param id       用户id
     * @return Boolean
     */
    Boolean selectUserIsPaid(String courseId, String id);

    /**
     * 根据订单id与用户id删除订单
     *
     * @param orderId 订单id
     * @param id      用户id
     * @return boolean
     */
    boolean removeOrder(String orderId, String id);

    /**
     * 根据订单号查询订单
     *
     * @param orderNo 订单号
     * @return 订单实体类
     */
    Order getOrderByOrderNo(String orderNo);

    /**
     * 根据微信回调结果更新订单状态
     *
     * @param map 微信回调结果
     */
    void updateOrderStatus(Map<String, String> map);

    /**
     * 查询支付状态
     *
     * @param orderNo 订单号
     * @param id      用户id
     * @return boolean
     */
    boolean selectPaidStatus(String orderNo, String id);
}
